package com.shy.collect.controller;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.shy.collect.entity.PayProduct;
import com.shy.collect.service.ProductService;
import com.shy.configs.common.enums.RCode;
import com.shy.configs.converts.ProductConvert;
import com.shy.configs.mvc.models.AjaxResult;
import com.shy.configs.mvc.models.PageObject;
import com.shy.configs.mvc.models.query.ProductQuery;
import com.shy.configs.mvc.models.vo.DicItemVo;
import com.shy.configs.mvc.models.vo.PayProductVo;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 产品支付信息
 */
@RestController
@RequestMapping("/product")
public class ProductController extends BaseController {

    @Resource
    private ProductService productService;
    @Resource
    private ProductConvert productConvert;

    /**
     * 分页查询支付产品信息
     *
     * @param pageNo
     * @param pageSize
     * @return
     */
    @GetMapping("/pageList")
    public AjaxResult pageList(Integer pageNo, Integer pageSize) {
        pageNo = defPageNo(pageNo);
        pageSize = defPageSze(pageSize);

        //分页查询结果
        IPage<PayProduct> payProductIPage = productService.pageList(pageNo, pageSize);
        // 分页对象
        PageObject pageObject = new PageObject(payProductIPage);
        // 查询记录
        List<PayProductVo> productVoList = productConvert.convertListPayProductVo(payProductIPage.getRecords());
        // 指定返回数据
        return AjaxResult.success(wrapData(productVoList, pageObject));
    }
    /**
     * 添加支付产品信息
     */
    @PostMapping("/add")
    public AjaxResult addProduct(@RequestBody @Validated ProductQuery productQuery) {
        productService.addProduct(productQuery);
        return AjaxResult.success();
    }
    /**
     * 修改支付产品状态
     */
    @PostMapping("/audit")
    public AjaxResult auditProduct(String productCode) {
        if (StrUtil.isNotBlank(productCode)){
            //修改产品状态
             productService.editStatus(productCode);
            return AjaxResult.success();
        }
        return AjaxResult.fail(RCode.REQUEST_PARAM_ERROR);
    }
    /**
     * 产品字典表
     */
    @GetMapping("/dicList")
    public AjaxResult productDicList(String productName) {
        if( StrUtil.isNotBlank(productName) && productName.length()> 1){

            List<PayProduct> productList= productService.dicList(productName);
            List<DicItemVo> itemVoList = productConvert.convertListDicItemVo(productList);

            return AjaxResult.success(itemVoList);
        }
        return AjaxResult.fail(RCode.REQUEST_PARAM_ERROR);
    }
    /**
     * 查询产品名称
     */
    @GetMapping("/productName")
    public AjaxResult productName(String productName) {
        if( StrUtil.isNotBlank(productName) && productName.length()> 1){
            //查询产品名称
            List<PayProduct> productList= productService.productNameList(productName);
            //转换Vo
            List<PayProductVo> productVoList = productConvert.convertListPayProductVo(productList);
            //指定返回数据
            return AjaxResult.success(productVoList);
        }
        return AjaxResult.fail(RCode.REQUEST_PARAM_ERROR);
    }
}
